/**
 * 全站路由配置
 *
 * meta参数说明
 * keepAlive是否缓冲页面，默认false
 * isTab是否加入到tag导航，默认true
 * isAuth是否需要授权，默认，true
 */
import Vue from 'vue'
import VueRouter from 'vue-router';
import PageRouter from './page/'
import ViewsRouter from './views/'
import AvueRouter from './avue-router';
import i18n from '@/lang'// Internationalization
import Store from '../store/';
Vue.use(VueRouter)

//创建路由
export const createRouter = () => new VueRouter({
  mode: 'history',
  routes: [...PageRouter, ...ViewsRouter]
})

// 获得 route 实例
const Router = createRouter()

/* START 解决路由报错问题 NavigationDuplicated: Avoided redundant navigation to current location: */
// 获取原型对象push函数
const originalPush = VueRouter.prototype.push
// 获取原型对象replace函数
const originalReplace = VueRouter.prototype.replace
// 修改原型对象中的push函数
VueRouter.prototype.push = function push(location){
  return originalPush.call(this , location).catch(err=>err)
}
// 修改原型对象中的replace函数
VueRouter.prototype.replace = function replace(location){
  return originalReplace.call(this , location).catch(err=>err)
}
/* END 解决路由报错问题 */

// 初始化和注册 AvueRouter
AvueRouter.install({
  store: Store,
  router: Router,
  i18n: i18n,
  keepAlive: false,
});

// 动态路由核心方法
Router.$avueRouter.formatRoutes(Store.state.user.menuAll, true);

export default Router